package ocg.common.re.file;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReString {

    static Logger logger = LogManager.getLogger ( ReString.class );

    public static Matcher matcher(String regex , String body){

        Pattern pattern = Pattern.compile ( regex );

        Matcher matcher = pattern.matcher( body );

        return matcher;
    }

    public static String code( String SMS){
        String regEx = "[^0-9]";//匹配指定范围内的数字

        //Pattern是一个正则表达式经编译后的表现模式
        Pattern p = Pattern.compile(regEx);

        // 一个Matcher对象是一个状态机器，它依据Pattern对象做为匹配模式对字符串展开匹配检查。
        Matcher m = p.matcher(SMS);

        //将输入的字符串中非数字部分用空格取代并存入一个字符串
        return m.replaceAll ( "" ).substring ( 0,6 );
    }

    public static String getUUID(){

        String uuid = UUID.randomUUID().toString();

        return uuid;
    }

    /**
     * 判断是否为 null 或者 空字符
     * 为空，返回 true
     * 不为空，返回 false
     * @param str   字符串
     * @return
     */
    public static boolean isBlank( String str ){

        if (str.equals("") || str == null) {
            return true;
        }

        return false;
    }

    /**
     * 检查字符串 M_str 是否包含字符串 C_str
     * @param M_str         被检查字符串
     * @param C_str     验证被检测字符串中包含的字符串
     * @return
     */
    public static boolean isContains( String M_str , String C_str ){

        if (M_str.indexOf ( C_str ) != -1) {
            logger.info ( M_str + " [包含] " + C_str );
            return true;
        }else {
            logger.info ( M_str + " [不包含] " + C_str );
            return false;
        }
    }

    /**
     * 检查字符串 M_str 是否包含字符串 C_str
     * 该检查忽略大小写，故，将 M_str 和 C_str 都转换为小写之后在比较
     * @param M_str         被检查字符串
     * @param C_str     验证被检测字符串中包含的字符串
     * @return
     */
    public static boolean isIgnoreContains( String M_str , String C_str ){

        if (M_str.toLowerCase ().indexOf ( C_str.toLowerCase () ) != -1) {
            logger.info ( M_str + " [包含] " + C_str );
            return true;
        }else {
            logger.info ( M_str + " [不包含] " + C_str );
            return false;
        }
    }
}
